Boule de cristal : Tutoriel et Projets personnels

Durée estimée: 45 minutes

Présentation

La boule de Cristal :
Dans cette application, l'utilisateur peut poser une question, et la boule de cristal donnera sa prédiction si on secoue le téléphone Cette application utilise :
l'accéléromètre qui est un capteur qui détecte et génère un évènement quand le téléphone est secoué,
et le composant "texte à parole" utilisé pour que le téléphone dise la prédiction.
La prédiction elle-même est chosie de façon aléatoire dans la liste des réponses possibles.

Objectifs: Dans cette leçon, vous allez :

  • Créer une application qui
    • utilise l' Accéléromètre (qui est un capteur) pour déclencher l'évènement qui va provoquer la réponse,
    • utilise le composant "texte à parole" pour convertir la réponse de sa forme textuelle, à sa forme orale diffusée sur le haut-parleur du smartphone,
    • sélectionne de façon aléatoire la réponse de la boule de cristal dans une variable qui est la "liste" des réponses possibles.

  • Améliorer cette application, par un développement personnel (mini-projet) :
    • qui utilise le composant de Reconnaissance Vocale.

Tutoriel

Suivez le tutoriel vidéo pour réaliser la version initiale de l'application "boule de cristal". Si vous préférez, vous pouvez utiliser la Version textuelle imprimable du tutoriel.

Pour commencer la leçon, ouvrez App Inventor avec la version initiale de Boule de cristal. Elle contient les media nécessaires au projet et une version partielle de l'interface utilisateur. Soyez patients à l'ouverture, puis dans l'onglet "Projets" utilisez l'option "Enregistrer le projet sous" BouleDeCristal.
(Note : on ne peut pas mettre d'espace dans le nom utilisé pour enregistrer le projet, et le nom doit être un nom de fichier valide.)

Mini Projets

Cliquer ici pour accéder à une version textuelle imprimable des mini-projets.

Maintenant que vou avez terminé le tutoriel, voisi des projets de développement personnel. Travaillez par deux pour améliorer l'application avec les évolutions suivantes :

  1. Modifiez les prédictions utilisée dans le tutoriel et ajoutez les votres (peut être plus drôles).
  2. Algorithme Si/Sinon (If/Else). Vous rappelez-vous que dans la vidéo, après avoir secoué le téléphone, le son et la voix sont joués en même temps ? du coup on n'entend plus la prédiction.

    Une manière de résoudre ce problème est d'utiliser un algorithme basé sur structure de contrôle Si/Sinon pour jouer l'un ou l'autre des sons mais pas les deux. Cette décision de jouer l'un ou l'autre va dépendre d'une condition Booléenne.
    Laquelle pourrait-on choisir ?

    Une idée est d'ajouter un paramètre qui va définir la manière dont l'application va renvoyer la prédiction : ou bien par une diction orale ou bien par une alerte sonore (en complément de l'affichage écrit de la réponseà l'écran).
    Pour permettre à l'utilisateur de choisir, ajoutez à votre application un menu de paramètrage qui lui permettra de choisir entre la diction de la réposne et une alerte sonore.

    Un composant de l'interface utilisateur (UI) qui est bien adapté au choix dans une liste, c'est le "sélectionneur de liste".
    Ce composant se présente comme un bouton, mais il dispose de la propriété "Eléments de la chaîne" qui peut être intialisée dans le designer par uen liste de choix séparés par une virgule. Par exemple si vous initialisez ""Eléments de la chaîne" à Parole, Son (dans les propriétés du sélectionneur de liste), vous aurez le choix entre "Parole" et "Son" quand vous cliquez sur le bouton du sélectionneur de liste à l'écran.
    Le sélectionneur a un gestionnaire d'évènements Après prise (ou AfterPicking) :

    Quelles sont les actions à exécuter lorsque après avoir choisi une option ? Vous devrez vous rappeler le choix de paramètre effectué par l'utilisateur.
    INDICE : utilisez une variable globale pour enregistrer et lire ce choix, puis un bloc si/sinon (if/else) pour tester la valeur de cette variable dans le gestionnaire d'évènements "quand accéléromètre.Secoué"

  3. Algorithme Si/SinonSi (If/ElseIf).
    Modifiez la solution de l'exerice précédent pour permettre à l'utilisateur de choisir le mode de réponse parmi 3 choix : Parole, son, Silence. Si l'utilisateur choisit Silence, le 3° choix, l'application doit afficher la prédiction dans le label à l'écran, sans diffuser de son ni de parole. Indice : vous aurez besoin de compléter le bloc si/sinon pour ajouter une nouvelel condition booléenne. Pour le faire, cliquez sur le symbole bleu qui repésente une roue (mutator) dans le bloc Si. Vos blocs dervaient avoir l'un des aspects suivants.
    Celui de gauche prévoit de traiter deux conditions. Celui de droite prévoit également un traitemet pour deux conditions, plus un troisième traitement si aucune des deux conditions n'est satisfaite. Ca peut être le cas par exemple si on veut traiter 3 cas comme a>b, a<b et a = b.
  4. Une autre limite de cette version de l'application c' que l'application deoone une prédiction à chaque fois que l'appareil est secoué, même si il n'y a pas de question ...
    Pour pallier à ce défaut, il faut que l'utilisateur parle avant que la boule de cristal réponde. Pour celà vous aurez besoin du composant de Reconnaissnce vocale qui dans l'onglet Media. Cette leçon d'une minute sur ce composant de Reconnaissance vocale vousa idera peut-être.
    Indice: pour mettre l'application "en attente" d"une parole de l'utilisateur, vous devez appeler la fonction "ObtenirTexte" du composant de reconnaissance vocale, lorque l'appareil a été secoué. Puis utiliser le gestionnaire d'évènement ".Après obtention texte" du même composant pour fournir la prédiction à l'utilisateur.
  5. Passez à la création. Imagnez et donnez corps à vos propres idées d'amélioration de cette application et créez de nouvelles versions de cette application.

Auto-contrôle

Not yet started
1 point
L'application Boule de Cristal géère un seul évènement : 'Quand accéléromètre.secoué'.
Quel est le composant à l'orifgine de cet évènement ?
Not yet started
1 point
Vrai ou Faux : Est-il possible d'avoir une liste vide, c'est à dire une liste sans élément.
Not yet started
1 point
La longueur (length) d'une liste est une de ses propriétés. Elle garde en mémoire le nombre d'éléments présents dans cette liste. Quelle est la longueur de la liste qui suit ? Ecrivez votre réponse dans la case.
Not yet started
1 point
Les listes sont indexées ou numérotées, en commençant par 1, ce qui veut dire que vous pouvez récupérer n'importe quel élément par son numéro ou son index.
Dans la liste qui suit, quel est l'indice de "No way" ? Ecrivez votre réponse dans la case.

Not yet started
1 point
Que se passe t-il si, dans App Inventor, vous demandez l'élément à l'index 10 dans la liste qui suit ?

Solutions

Pour votre Portfolio

Créez une page nommée : Boule de cristal dans la catégorie "réflexions" de votre portfolio, puis répondez aux questions suivantes :
  1. Cette application est l'abstraction d'un jeu de prédiction où on secoue une boule qui contient des messages dont un apparait lorsque l'on arrête de secouer. Vous avez créé un modèle de ce type de jeu.
    Décrivez la manière dont les fonctionnalités de votre modèle représentent ou correspondent aux fonctionalités de la version matérielle du jeu. Note : il n'est aps nécessaire que vous connaisiez ou que vous ayez joué avec une version matérielle du jeu. Vous pouvez vous en faire une idée et réfléchir aux correspondances entre la version physique et le modèle numérique.
  2. Cette application utilise des fonctions ou nombres aléatoires pour choisir un message dans une liste.
    Supposez que vous devez réaliser une application qui consiste à jouer à pile ou face.
    Comment utiliseriez vous les fonctions aléatoires (onglet Math) dasn ce cas ?